International Business Machines Corp. (IBM) of Armonk, N.Y. has been at the forefront of new paradigms in business computing. During the 1960's. IBM invented the concept of a hypervisor. A hypervisor is software running on a particular hardware platform that enables multiple operating systems (OSs) to run on the platform at the same time. Typically, this feature is accomplished by “virtualizing,” or hiding technical details, of a computer resource from users of that resource. Virtualization may create the appearance to end users or other resources that a single computer resource functions as multiple virtual resources or that multiple physical resources appear as a single virtual resource.
During the 1990's, IBM developed the concept of logical partitions, or “LPARs.” While the hypervisor is directed to the virtualization of operating systems, LPAR focuses on the partitioning of computer hardware resources. For example, a physical machine can be partitioned into multiple LPARs, each hosting a separate operating system. In data storage systems, LPARs enable multiple virtual instances of a storage array to exist within a single physical array. Further virtualization of computer memory has lead to virtual real memory (VRM). With the advent of VRM, data servers may create LPARs that are over-subscribed in terms of real memory usage. In other words, if a server has 32 GBs of real memory, LPARS may be created that use 40 GB of VRM. To perform this, a hypervisor running on the server executes page-in and page-out requests to disk on behalf of the LPARs, much like virtual memory managers (VMMs) currently do within an OS. Memory paged-out is written to physical disk storage handled by a virtual I/O server (VIOS), which is a special purpose LPAR that provides other client LPARs with virtualized I/O resources.
Input/Out (I/O) request are typically handled by one or more device drivers, or a “conduit,” that act in tandem to deliver a command for the hypervisor to an I/O stack. The conduit receives a request from the hypervisor to access a specific portion of memory for I/O, such as a block storage device. The conduit translates the request into a command that is understandable to the block storage device and transmits the request to the storage device. The block storage device processes the request and transmits a response to the conduit, which forwards the response to the hypervisor.
Currently available conduits handle specialized processing based upon the data types associated with either the hypervisor or the I/O block storage device. Adding functionality to the conduit related to data content rather than merely data transfer requires the creation of a new type of conduit.